#ifndef _APPLICATION_
#define _APPLICATION_
#include <cstring>

#include "GameManager.h"
#include "GraphicsManager.h"
#include "WorldManager.h"

#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600

class Application
{
public:
	Application();
	virtual ~Application();
	void main(int argc, char **argv);
	GameManager* getGameMgr();
	GraphicsManager* getGraphicsMgr();
	WorldManager* getWorldMgr();
	void Tick();
	void Exit();

	// glut callbacks
	void ProcessRendering(void);
	void ProcessMouse(int, int) ;
	void ProcessMouseClick(int button, int state, int x, int y);
	void KeyboardInput(unsigned char c, int x, int y);
	void ProcessSpecialInput(int key, int x, int y);
	void ProcessIdle(void);
	void ProcessClose(void);

private:
	GameManager *m_gameMgr;
	GraphicsManager *m_gfxMgr;
	WorldManager *m_worldMgr;
};

#endif //_APPLICATION_